package org.gd.hellojavacore.patterns.adapter;

import org.gd.hellojavacore.patterns.StructurePattern;

/**
 <pre>

 Адаптер, Adapter или Wrapper/Обёртка — структурный шаблон проектирования, предназначенный
 для организации использования функций объекта, недоступного для модификации, через специально созданный интерфейс

 Основные характеристики

 Задача
 Система поддерживает требуемые данные и поведение, но имеет неподходящий интерфейс.
 Чаще всего шаблон Адаптер применяется, если необходимо создать класс,
 производный от вновь определяемого или уже существующего абстрактного класса.

 Способ решения
 Адаптер предусматривает создание класса-оболочки[1] с требуемым интерфейсом.

 Участники
 Класс Adapter приводит интерфейс класса Adaptee в соответствие с интерфейсом класса Target
 (наследником которого является Adapter). Это позволяет объекту Client использовать объект Adaptee
 (посредством адаптера Adapter) так, словно он является экземпляром класса Target.

 Таким образом Client обращается к интерфейсу Target, реализованному в наследнике Adapter,
 который перенаправляет обращение к Adaptee.

 Следствия
 Шаблон Адаптер позволяет включать уже существующие объекты в новые объектные структуры,
 независимо от различий в их интерфейсах.

 Реализация
 Включение уже существующего класса в другой класс. Интерфейс включающего класса приводится
 в соответствие с новыми требованиями, а вызовы его методов преобразуются в вызовы методов включённого класса
 
 </pre>
 */
public interface Adapter extends StructurePattern {
}